繁体   English   中英

将图像保存到 RAM

[英]Save an image to RAM

我想通过套接字服务器发送图像。 发送后,我想在 ram 上显示此图像(我的意思是不保存为文件)。 我对数组进行了一些惊人的更改,最后我到达了我的原始数组,但我仍然无法显示此图像。 而且我的阵法进度真的很慢。 有什么建议吗?我该如何克服这个错误?

Traceback (most recent call last):
  File "C:\Users\ENES\Desktop\python projects\opencvv\opencv_test_1.py", line 44, in <module>
    cv2.imshow("hi",arr2)
cv2.error: OpenCV(4.6.0) D:/a/opencv-python/opencv-python/opencv/modules/highgui/src/precomp.hpp:155: error: (-215:Assertion failed) src_depth != CV_16F && src_depth != CV_32S in function 'convertToShow'

我的代码:

import cv2
import numpy as np
import time

img= cv2.imread("resim/tfm.jpg")
img1= cv2.imread("resim/tfm.jpg")
print(type(img))
y, x = len(img), len(img[0])
print(y, x)
print(img)
for y1 in range(y):
    i=img[y1]
    print(y1)
    for x1 in range(x):
        data=i[x1]
        imgstr=np.array_str(data)
        #print(img)
        imgstr=imgstr.replace("[","")
        imgstr=imgstr.replace("]","")
        #print(img)
        """
        for a1 in range(3):
            img=i[a1]
            print(img)"""
        imgstr=np.fromstring(imgstr, dtype=int, sep=" ")
        #print(img)
        if x1==0:
            arr1=imgstr
        else:
            arr1=np.vstack((arr1, imgstr))
    if y1==0:
        arr2=arr1
    else:
        arr2=np.vstack((arr2, arr1))
#arr1=np.array(arr1)
print(img.shape, arr2.shape)
#time.sleep(100)
arr2=np.array(arr2.reshape(353,616,3))
print(arr2==img)
print(type(arr2), type(img))
print(img.shape, arr2.shape)

#print(img1)
cv2.imshow("hi",arr2)


我只更改 1 行代码就解决了我的问题。 我们需要声明数组的数据类型。 这是代码:

arr2=np.array(arr2.reshape(353,616,3), dtype=np.uint8)

然而,我发现了一个新的 function cv2.imencode() 这个 function 正是我想要的,它真的比我的代码快。 所以,我将使用这个 function。感谢您的所有回答!

这是一个例子:

import cv2
import numpy as np
import time

img= cv2.imread("resim/tfm.jpg")

img=cv2.imencode(".jpg", img)[1]
print(img)
byte_img = img.tobytes()
print(len(byte_img))

recvd_img=np.array(bytearray(byte_img), dtype="uint8")
recvd_img=cv2.imdecode(recvd_img, cv2.IMREAD_COLOR)
cv2.imshow("sa", recvd_img)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM