二进制 120

Private Sub Command1_Click()
    Me.Font.Size = 60
    Print erjinzhi(120)
End Sub

Private Function erjinzhi(m As Byte) As String
    Dim n As Byte
    n = m
    Const er As Byte = 2
    Dim returnS As String
    Dim shang As Byte
    Dim yushu(1 To 8) As Byte
    Dim i As Byte
    i = UBound(yushu)
    shang = n \ er '11
    yushu(i) = n Mod er '1
    returnS = yushu(i)
    While shang <> 0
    i = i - 1
    n = shang '11 5 2 1
    shang = n \ er '5 2 1 0
    yushu(i) = n Mod er '1 1 0 1
    returnS = yushu(i) & returnS
Wend
    erjinzhi = returnS
End Function
OpenCV处理图像二进制数据的方法有多种,以下为不同场景下的处理方式: ### 二进制图片数据与cv2图像互转 可使用自定义函数进行二进制图片数据与cv2图像的转换。 ```python import cv2 import numpy as np def bytes2cv(im): '''二进制图片转cv2 :param im: 二进制图片数据,bytes :return: cv2图像,numpy.ndarray ''' return cv2.imdecode(np.array(bytearray(im), dtype='uint8'), cv2.IMREAD_UNCHANGED) def cv2bytes(im): '''cv2转二进制图片 :param im: cv2图像,numpy.ndarray :return: 二进制图片数据,bytes ''' return np.array(cv2.imencode('.png', im)[1]).tobytes() ``` 上述代码中,`bytes2cv`函数能将二进制图片数据转换为cv2图像,`cv2bytes`函数可将cv2图像转换为二进制图片数据[^1]。 ### 二进制数据转opencv图片 可先将二进制数据写入图片文件,再将其转换为opencv图片。 ```python import cv2 import numpy as np # 假设buffer_data是图片的二进制数据 buffer_data = b'...' with open('./test.jpg', 'wb') as f: f.write(buffer_data) img_np_arr = np.frombuffer(buffer_data, np.uint8) image = cv2.imdecode(img_np_arr, cv2.IMREAD_COLOR) print(image.shape) ``` 此代码先把二进制数据写入`test.jpg`文件,然后使用`np.frombuffer`和`cv2.imdecode`将其转换为opencv图片并打印其形状[^2]。 ### Python中opencv读取二进制图片文件 可先将二进制文件转换为jpg等图片格式。 ```python from io import BytesIO import numpy as np from PIL import Image # 假设binary_file是二进制文件对应变量 binary_file = b'...' image_data = BytesIO(binary_file) img = Image.open(image_data) ``` 上述代码利用`BytesIO`和`Image.open`将二进制文件转换为图片格式[^3]。 ### OpenCV将图像数据写入二进制(.dat)文件 在Matlab中可对图像数据进行处理并写入二进制文件。 ```matlab width = 120; % 原图像宽度 height = 120; % 原图像高度 channels = 3; % 原图像通道数 % 打开并读取文件 file = fopen('test.dat', 'rb'); cont = fread(file, 'uint8'); fclose(file); % 转化并显示图像 data = reshape(cont, channels*height, width); % 调整显示格式 im(:,:,1) = data(3:3:end, :)'; % R通道 im(:,:,2) = data(2:3:end, :)'; % G通道 im(:,:,3) = data(1:3:end, :)'; % B通道 figure; imshow(uint8(im)) ``` 此代码从二进制文件中读取数据,调整数据格式并显示图像[^4]。 ### C++中OpenCV读取二进制文件 ```cpp #include <iostream> #include <fstream> #include <opencv2/opencv.hpp> using namespace std; #define HEIGHT 1516 #define WIDTH 1516 int main(int argc, char** argv){ ifstream inFile(argv[1], ios::in | ios::binary); if(!inFile){ cout << "error" <<endl; return 0; } cv::Mat im(HEIGHT, WIDTH, CV_32FC1); //float类型 for(int r = 0; r < im.rows; r++){ inFile.read((char*)(im.ptr<uchar>(r)), im.cols*im.elemSize()); } inFile.close(); double max; cv::minMaxLoc(im, NULL, &max); //查找最大值 cv::Mat mat; im.convertTo(mat, CV_8U, 255 / max, 0); //转换为8位无符号类型 cv::imwrite("../im.bmp", mat); return 0; } ``` 该C++代码使用OpenCV读取二进制文件,将其存储到`cv::Mat`中,查找最大值并将其转换为8位无符号类型,最后保存为`im.bmp`文件[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值